package com.genreate.util.pay.ali.pcWeb;

import com.alipay.v3.ApiClient;
import com.alipay.v3.ApiException;
import com.alipay.v3.Configuration;
import com.alipay.v3.util.GenericExecuteApi;
import com.alipay.v3.util.model.AlipayConfig;
import com.genreate.util.pay.ali.AliPayConfigPo;
import com.genreate.util.pay.ali.enums.TimeUnitAliEnum;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * pc网站下单
 *
 * @author LYS
 * @date 2025-07-09
 */
public class GenericExecute {

    public static void main(String[] args) throws ApiException {
        ApiClient defaultClient = Configuration.getDefaultApiClient();
        // 初始化alipay参数（全局设置一次）
        defaultClient.setAlipayConfig(getAlipayConfig());

        GenericExecuteApi api = new GenericExecuteApi();

        // 构造请求参数以调用接口
        Map<String, Object> bizParams = new HashMap<>();
        Map<String, Object> bizContent = new HashMap<>();
        
        // 设置商户订单号
        bizContent.put("out_trade_no", "2025070900001");
        
        // 设置订单总金额
        bizContent.put("total_amount", "88.88");
        
        // 设置订单标题
        bizContent.put("subject", "设置订单标题");
        
        // 设置产品码
        bizContent.put("product_code", "FAST_INSTANT_TRADE_PAY");
        
        // 设置订单附加信息
        bizContent.put("body", "设置订单附加信息");
        
        // 设置PC扫码支付的方式
        bizContent.put("qr_pay_mode", "1");
        
        // 设置订单包含的商品列表信息
        List<Map<String, Object>> goodsDetail = new ArrayList<>();
        Map<String, Object> goodsDetail0 = new HashMap<>();
        goodsDetail0.put("out_sku_id", "outSku_01");
        goodsDetail0.put("goods_name", "商品名称222");
        goodsDetail0.put("alipay_goods_id", "20010001");
        goodsDetail0.put("quantity", 1);
        goodsDetail0.put("price", "2000");
        goodsDetail0.put("out_item_id", "outItem_01");
        goodsDetail0.put("goods_id", "apple-01");
        goodsDetail0.put("goods_category", "34543238");
        goodsDetail0.put("categories_tree", "124868003|126232002|126252004");
        goodsDetail0.put("show_url", "http://www.alipay.com/xxx.jpg");
        goodsDetail.add(goodsDetail0);
        bizContent.put("goods_detail", goodsDetail);
        
        // 设置订单绝对超时时间
        bizContent.put("time_expire", TimeUnitAliEnum.HOUR_TWO.getTimeoutStr());

        // 设置请求后页面的集成方式
        bizContent.put("integration_type", "PCWEB");

        
        bizParams.put("biz_content", bizContent);

        try {
            // 如果是第三方代调用模式，请设置app_auth_token（应用授权令牌）
//            String pageRedirectionData = api.pageExecute("alipay.trade.page.pay", "POST", bizParams, null, "<-- 请填写应用授权令牌 -->", null);
            // 如果需要返回GET请求，请使用
             String pageRedirectionData = api.pageExecute("alipay.trade.page.pay", "GET", bizParams);
            System.out.println(pageRedirectionData);
        } catch (ApiException e) {
            System.out.println("调用失败");
        }
    }

    private static AlipayConfig getAlipayConfig() {
        return AliPayConfigPo.getAppAlipayConfig();
    }
}